/**
 * webchat聊天时，当用户发送带有链接的消息时，接收信息的用户可以高亮显示出对方发送来的链接
 * 判断发送来的消息中是否有链接元素，然后在接收消息时，把链接字符串替换成a超链接
 * @param {string} content 用户发送的文本信息
 */

const translateUrl2Href = (content) => {
    // 判断字符串是否为超链接
    // eslint-disable-next-line
    const reg =
        /(((https?|ftp):\/\/)?[-a-z0-9]+(\.[-a-z0-9]+)*\.(?:com|edu|gov|int|mil|net|org|biz|info|name|museum|asia|coop|aero|top|[a-z][a-z]|((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d))\b(\/[-a-z0-9_:&?=+,.!~%]*)?)/g;

    content = content?.replace(reg, (match) => {
        // match是符合reg规则的内容
        // 在这里对匹配到的内容进行操作，比如把字符串替换成超链接
        // 基础聊天信息里可能包含.gif的表情包，这个要排除掉
        if (match.indexOf(".gif") === -1) {
            let href = match;
            if (match.indexOf("http") === -1 && match.indexOf("ftp") === -1) {
                href = "http://" + match;
            }
            return `<a target="_blank" href=${href} class="text_link">${match}</a>`;
        }
        // 如果是.gif的链接，就原样返回，不做处理
        return match;
    });
    return content;
};

export default translateUrl2Href;
